package br.com.pheat.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.pheat.beans.Alimento;
import br.com.pheat.beans.RefeicaoAlimento;
import br.com.pheat.factory.ConnectionFactory;

import java.util.ArrayList;
import java.util.List;

public class AlimentoDAO {

	public static Alimento getAlimento(Integer codigoAlimento) throws SQLException{

		Alimento alimento = null;
		Connection conn = ConnectionFactory.getConnection();

		String sql = "select * from alimento where codigo = ?";

		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setInt(1, codigoAlimento);

		ResultSet rs = stmt.executeQuery();

		if(rs.next()){
			alimento = new Alimento();
			alimento.setCodigo(rs.getInt("codigo"));
			alimento.setNome(rs.getString("nome"));
			alimento.setCalorias(rs.getFloat("calorias"));
			alimento.setTipo_alimento(rs.getString("tipo_alimento"));
		}
		stmt.close();
		rs.close();
		conn.close();
		return alimento;
	}

	public static List<RefeicaoAlimento> getRefeicaoAlimento(Integer codigo_refeicao) throws SQLException {
		List<RefeicaoAlimento> refeicaoAlimento = new ArrayList<RefeicaoAlimento>();

		Connection conn = ConnectionFactory.getConnection();
		
		String sql = "SELECT porcao, codigo_alimento FROM refeicao_alimento WHERE codigo_refeicao = ?";

		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setInt(1, codigo_refeicao);
		
		ResultSet rs = stmt.executeQuery();

		while(rs.next()) {
			Alimento alimento = AlimentoDAO.getAlimento(rs.getInt("codigo_alimento"));
			RefeicaoAlimento refeicao = new RefeicaoAlimento();
			refeicao.setCodigo(codigo_refeicao);
			refeicao.setPorcao(rs.getFloat("porcao"));
			refeicao.setAlimento(alimento);
			refeicao.setCalorias(refeicao.getPorcao() * alimento.getCalorias());

			refeicaoAlimento.add(refeicao);
		}
		
		return refeicaoAlimento;
	}
}